package com.stud.system.service;

import org.springframework.web.multipart.MultipartFile;

import java.io.OutputStream;
import java.util.List;


/**
 * 文件存储引擎
 *
 * @author Stud
 * @date 2024-05-03
 */
public interface FileEngine {

    /**
     * 文件上传
     * @param sourceFile     源文件
     * @param targetFolder   目标文件夹
     * @param targetFileName 目标文件名
     *
     * @return 上传成功的fileKey
     */
    String upload(MultipartFile sourceFile, String targetFolder, String targetFileName);

    /**
     * 获取文件下载链接
     */
    String getDownloadUrl(String fileKey);

    /**
     * 文件下载
     */
    void download(String fileKey, OutputStream outputStream);

    /**
     * 文件删除
     */
    boolean remove(String... fileKeys);

    /**
     * 文件删除
     */
    default boolean remove(List<String> fileKeys) {
        return remove(fileKeys.toArray(new String[0]));
    }
}
